home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
xfalib.lha
/
XFA_Library
/
AmigaE
/
examples
/
xfa2iff.e
< prev
Wrap
Text File
|
1995-09-06
|
2KB
|
90 lines
/* This little demo program shows how to load up a XFA Anim
** And to save it as IFF frames.
**
** This code's been written in AmigaE by Fabio Rotondo.
**
** Public domain program.
**
** Written for ClassX.
**
*/
MODULE 'xfa','libraries/xfa','dos/rdargs','intuition/screens',
'libraries/iffparse','graphics/gfx'
DEF hd:PTR TO xfa_head
DEF m:mem
DEF iff:PTR TO iffhandle
DEF bmp0:PTR TO bitmap, bmp1:PTR TO bitmap
DEF sc0:PTR TO screen, sc1:PTR TO screen
DEF mode, cnt
PROC main()
DEF args=NIL:PTR TO LONG, rdargs
WriteF('XFA2IFF V0.1 - By Fabio Rotondo.\n')
rdargs:=ReadArgs('NAME/A', args, NIL)
IF rdargs
IF (xfabase:=OpenLibrary('xfa.library',0))
conv(args[0])
WriteF('Operation Complete.\nFrames are in t:\n')
CloseLibrary(xfabase)
ELSE
WriteF('Cannot Open xfa.library\n')
ENDIF
FreeArgs(rdargs)
ELSE
WriteF('Bad Args.\n')
ENDIF
CleanUp(0)
ENDPROC
PROC conv(txt:PTR TO CHAR)
DEF swp
IF iff:=XfA_OpenRead(txt,0,0)
hd:=XfA_HeadPtr()
mode:=XfA_GetPackMode() AND XFA_MODEI
IF (sc0:=OpenS(hd.bytesperrow*8, hd.rows, hd.depth, hd.modeid,'',0))
bmp0:=sc0.bitmap
XfA_UseCMap(sc0,0)
IF mode=0
IF (sc1:=OpenS(hd.bytesperrow*8, hd.rows, hd.depth, hd.modeid,'',0))
bmp1:=sc1.bitmap
XfA_UseCMap(sc1,0)
ENDIF
ENDIF
WHILE XfA_ReadFrame(iff, {m})=0
XfA_UnPackBitMap (bmp0, m.ptr)
XfA_FreeFrame ({m})
IF mode
IF XfA_ReadFrame(iff, {m})=0
XfA_UnPackBitMap(bmp0, m.ptr)
XfA_FreeFrame ({m})
ENDIF
ENDIF
XfA_SaveScreen (sc0, StringF('t:frame\d',cnt))
IF mode=0
swp:=sc0
sc0:=sc1
sc1:=swp
swp:=bmp0
bmp0:=bmp1
bmp1:=swp
ENDIF
INC cnt
ENDWHILE
XfA_CloseRead (iff)
ENDIF
ENDIF
ENDPROC